package com.lxk.mall.pms.domain.vo.spu;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.lxk.mall.pms.domain.PmsProductSpu;
import com.lxk.service.pms.response.PmsProductSpuDto;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 商品spu视图对象 pms_product_spu
 *
 * @author Lion Li
 * @date 2024-06-06
 */
@Data
@ExcelIgnoreUnannotated
@AutoMappers(value = {
    @AutoMapper(target = PmsProductSpu.class),
    @AutoMapper(target = PmsProductSpuDto.class)
})
public class PmsProductSpuVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 商品 SPU 编号，自增
     */
    @ExcelProperty(value = "商品 SPU 编号，自增")
    private Long id;

    /**
     * 商户id
     */
    private Long merId;

    /**
     * 商品类型
     */
    private String productType;

    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称")
    private String name;

    /**
     * 关键字
     */
    @ExcelProperty(value = "关键字")
    private String keyword;

    /**
     * 商品简介
     */
    @ExcelProperty(value = "商品简介")
    private String introduction;

    /**
     * 商品详情
     */
    @ExcelProperty(value = "商品详情")
    private String description;

    /**
     * 商品分类编号
     */
    @ExcelProperty(value = "商品分类编号")
    private Long categoryId;

    /**
     * 商品品牌编号
     */
    @ExcelProperty(value = "商品品牌编号")
    private Long brandId;

    /**
     * 商品封面图
     */
    @ExcelProperty(value = "商品封面图")
    private String picUrl;

    /**
     * 商品轮播图地址
     * 数组，以逗号分隔
     * 最多上传15张
     */
    @ExcelProperty(value = "商品轮播图地址 数组，以逗号分隔 最多上传15张")
    private String sliderPicUrls;

    /**
     * 排序字段
     */
    @ExcelProperty(value = "排序字段")
    private Long sort;

    /**
     * 商品状态: 1 上架（开启） 0 下架（禁用） -1 回收
     */
    @ExcelProperty(value = "商品状态: 1 上架", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "开=启")
    private Integer status;

    /**
     * 规格类型：0 单规格 1 多规格
     */
    @ExcelProperty(value = "规格类型：0 单规格 1 多规格")
    private Integer specType;

    /**
     * 商品价格，单位使用：分
     */
    @ExcelProperty(value = "商品价格")
    private BigDecimal price;

    /**
     * 市场价，单位使用：分
     */
    @ExcelProperty(value = "市场价")
    private BigDecimal marketPrice;

    /**
     * 成本价，单位： 分
     */
    @ExcelProperty(value = "成本价")
    private BigDecimal costPrice;

    /**
     * 积分
     */
    @ExcelProperty(value = "积分")
    private BigDecimal point;

    /**
     * 库存
     */
    @ExcelProperty(value = "库存")
    private Integer stock;

    /**
     * 配送方式数组
     */
    @ExcelProperty(value = "配送方式数组")
    private List<Integer> deliveryTypes;

    /**
     * 物流配置模板编号
     */
    @ExcelProperty(value = "物流配置模板编号")
    private Long deliveryTemplateId;

    /**
     * 赠送积分
     */
    @ExcelProperty(value = "赠送积分")
    private Integer giveIntegral;

    /**
     * 分销类型
     */
    @ExcelProperty(value = "分销类型")
    private Integer subCommissionType;

    /**
     * 商品销量
     */
    @ExcelProperty(value = "商品销量")
    private Long salesCount;

    /**
     * 虚拟销量
     */
    @ExcelProperty(value = "虚拟销量")
    private Long virtualSalesCount;

    /**
     * 商品点击量
     */
    @ExcelProperty(value = "商品点击量")
    private Long browseCount;

    @ExcelProperty(value = "创建时间")
    private Date createTime;


}
